package models

import "sanrenx.com/xyxf/pkg/orm"

//列表对象
type Sutra struct {
	ID uint64 `gorm:"primary_key" json:"id"`

	CategoryID   uint   `json:"categoryId"`   //类型
	CategoryName string `json:"categoryName"` //类型名

	Name   string `json:"name"`   //名称
	Alias  string `json:"alias"`  //简称 别名
	Volume string `json:"volume"` //卷数
	Author string `json:"author"` //作者或译者
	Source string `json:"source"` //来源

	Hot      int  `json:"hot"`      //热力值
	Copyable bool `json:"copyable"` //是否可抄写
}

//详情
type SutraDetails struct {
	orm.Model

	CategoryID   uint      `gorm:"index" json:"categoryId"` //类型
	CategoryName string    `json:"categoryName"`            //类型名
	Category     *Category `gorm:"foreignKey:CategoryID" json:"category"`

	Name     string `json:"name" binding:"required"` //名称
	Pinyin   string `json:"pinyin"`                  //注音
	Alias    string `json:"alias"`                   //简称 别名
	Part     string `json:"part"`                    //部名
	Num      int    `json:"num"`                     //部号
	Volume   string `json:"volume"`                  //卷数
	Source   string `json:"source"`                  //来源
	Benefits string `json:"benefits"`                //功德利益
	Author   string `json:"author"`                  //作者或译者
	Tags     string `json:"tags"`                    //标签
	Hot      int    `json:"hot"`                     //热力值
	Copyable bool   `json:"copyable"`                //可抄写
}

// TableName 会将 SutraDetails 的表名重写为 `sutra`
func (SutraDetails) TableName() string {
	return "sutra"
}

//章回
type Chapter struct {
	ID       uint64 `gorm:"primary_key" json:"id"`
	SutraID  uint64 `gorm:"index" json:"sutraId"`
	Title    string `json:"title"`    //标题
	Copyable bool   `json:"copyable"` //可抄写
}

//章回
type ChapterDetails struct {
	orm.Model
	SutraID  uint64 `gorm:"index" json:"sutraId" binding:"required"` //佛经ID
	Title    string `json:"title" binding:"required"`                //标题
	Pinyin   string `json:"pinyin"`                                  //拼音
	Original string `json:"original" binding:"required"`             //原文
	Target   string `json:"target"`                                  //译文
	Copyable bool   `json:"copyable"`                                //可抄写
	//句子拆解
	Paragraph []Paragraph `gorm:"-" json:"paragraph"` //段落
}

// TableName 会将 ChapterDetails 的表名重写为 `chapter`
func (ChapterDetails) TableName() string {
	return "sutra_chapter"
}

//段落
type Paragraph struct {
	Index    int        `json:"index"`
	Content  string     `json:"content"`
	Pinyin   string     `json:"pinyin"`
	Sentence []Sentence `json:"sentence"` //句子
}

//句子
type Sentence struct {
	Index  int    `json:"index"`
	Text   string `json:"text"`
	Pinyin string `json:"pinyin"`
	Symbol string `json:"symbol"`
	Word   []Word `json:"word"` //字
	Note   []Note `json:"note"` //注解
}

//字
type Word struct {
	Index  int    `json:"index"`
	Word   string `json:"word"`
	Pinyin string `json:"pinyin"`
}

//注解
type Note struct {
	Start int    `json:"start"`
	End   int    `json:"end"`
	Text  string `json:"text"`
	Note  string `json:"note"`
}
